/**
 * 角色
 *
 * 一个权限可以给多个角色
 * 一个角色可以拥有多个权限
 *
 * 所以 是N-N（多对多，ManyToMany）的关系
 */

import { EntitySchema } from 'typeorm'

export default new EntitySchema({
  name: 'Role',
  columns: {
    roleId: {
      type: 'int',
      primary: true,
      generated: 'increment',
      comment: '角色Id'
    },

    roleName: {
      type: 'varchar',
      length: 40,
      comment: '角色名称'
    },

    status: {
      type: 'int',
      default: 0,
      comment: '角色状态 1-启用; 0-禁用'
    },

    desc: {
      type: 'varchar',
      length: 120,
      comment: '角色描述',
      nullable: true
    },

    createTime: {
      type: 'datetime',
      default: () => 'CURRENT_TIMESTAMP'
    },

    updateTime: {
      type: 'datetime',
      default: () => 'CURRENT_TIMESTAMP'
    },

    updateId: {
      type: 'int',
      comment: '更新人Id',
      nullable: true
    }
  },

  relations: {
    // 最终在数据库会自动创建 role_menus_menu 表
    // 角色表和菜单表 多对多
    menus: {
      target: 'Menu',
      type: 'many-to-many',
      joinTable: true
    }
  }
})
